This invention relates to a parallel searching technique. The invention is particularly, although not exclusively, concerned with a technique for parallel searching of a relational database.
In a relational database management system (RDBMS), the database storage space comprises one or more files, which are typically stored on a number of disks. When searching a relational database, it is desirable for the RDBMS to be able to read each of these files as fast as possible. Various solutions to this have been proposed.
In a first proposed solution, the file is split into fragments and these fragments are stored in separate data spaces. When the file is to be searched, a separate thread is initiated for each fragment and process scheduling, thread scheduling and multiple processor hardware being used to keep all threads busy. The threads may or may not interfere with one another, since the RDBMS does not know where the data is stored. Interference happens when two threads access the same disk at the same time, which causes frequent head movements and reduces the data transfer rate.
In another proposed solution, the file is divided into partitions and the partitions are sent to different processes that can be executed independently. The processes may or may not interfere with one another, since they do not know the physical placement of the data.
In yet another proposed solution, a low level process monitors the input/output activity of users and, when it appears that sequential access is being used, the process initiates large multi-block reads in anticipation of the application requirement.
There are also "massively parallel" solutions where each set of disks has its own processor so that a search can be split between multiple processors.
The object of the present invention is to provide an improved technique for parallel searching.